// 数据验证工具类 - 简化版本
export class ValidationUtils {
  // 验证手机号码
  static isValidPhone(phone: string): boolean {
    const phoneRegex = /^1[3-9]\d{9}$/;
    return phoneRegex.test(phone);
  }

  // 验证邮箱地址
  static isValidEmail(email: string): boolean {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
  }

  // 验证用户名（字母数字组合，长度4-20）
  static isValidUsername(username: string): boolean {
    const usernameRegex = /^[a-zA-Z0-9]{4,20}$/;
    return usernameRegex.test(username);
  }

  // 验证密码强度
  static isValidPassword(password: string): boolean {
    return password.length >= 6;
  }

  // 验证年龄范围
  static isValidAge(age: number): boolean {
    // 年龄范围：1-120 岁
    return age >= 1 && age <= 120;
  }

  // 验证文本长度
  static isValidTextLength(text: string, minLength: number, maxLength: number): boolean {
    return text.length >= minLength && text.length <= maxLength;
  }

  // 验证是否为有效日期
  static isValidDate(date: Date | string): boolean {
    const d = typeof date === 'string' ? new Date(date) : date;
    return d instanceof Date && !isNaN(d.getTime());
  }

  // 验证是否为有效URL（使用正则表达式替代URL对象）
  static isValidURL(url: string): boolean {
    const urlRegex = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/;
    return urlRegex.test(url);
  }

  // 验证是否为有效的JSON字符串
  static isValidJSON(json: string): boolean {
    try {
      JSON.parse(json);
      return true;
    } catch {
      return false;
    }
  }

  // 验证是否为纯数字
  static isNumeric(value: string): boolean {
    return /^\d+$/.test(value);
  }

  // 验证是否为有效的浮点数
  static isFloat(value: string): boolean {
    return /^\d+\.?\d*$/.test(value);
  }

  // 验证身份证号码（简化版）
  static isValidIDCard(card: string): boolean {
    const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return idCardRegex.test(card);
  }

  // 验证是否为空值
  static isEmpty(value: any): boolean {
    if (value === null || value === undefined) return true;
    if (typeof value === 'string') return value.trim() === '';
    if (Array.isArray(value)) return value.length === 0;
    if (typeof value === 'object') return Object.keys(value).length === 0;
    return false;
  }

  // 验证BMI值范围
  static isValidBMI(bmi: number): boolean {
    return bmi >= 10 && bmi <= 60;
  }

  // 验证血压值范围
  static isValidBloodPressure(systolic: number, diastolic: number): boolean {
    // 收缩压范围：70-200
    if (systolic < 70 || systolic > 200) return false;
    // 舒张压范围：40-120
    if (diastolic < 40 || diastolic > 120) return false;
    // 收缩压必须大于舒张压
    return systolic > diastolic;
  }

  // 验证血糖值范围
  static isValidBloodSugar(sugar: number): boolean {
    // 血糖范围：1.0-35.0 mmol/L
    return sugar >= 1.0 && sugar <= 35.0;
  }

  // 验证心率范围
  static isValidHeartRate(rate: number): boolean {
    // 心率范围：30-250 次/分
    return rate >= 30 && rate <= 250;
  }
}

export default ValidationUtils;